package com.yeyks.commonReference.service.consumer;

import com.yeyks.account.dal.domain.AccountInfo;
import com.yeyks.common.appcommon.dto.platform.AppFishBallGoodsDTO;
import com.yeyks.common.appcommon.param.platform.QueryFishBallGoodsParam;
import com.yeyks.common.appcommon.result.CommonPage;
import com.yeyks.common.appcommon.result.CommonResult;
import com.yeyks.common.dto.FishBallGoodsDTO;
import com.yeyks.commonReference.pojo.param.consumer.FishBallGoodsConversionParam;
import com.yeyks.consumer.dal.domain.FishBallGoods;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeyks.common.ajax.AjaxResponseBody;
import com.yeyks.common.param.fishball.AddFishBallGoodsParam;
import com.yeyks.common.param.fishball.UpdateFishBallGoodsParam;
import com.yeyks.consumer.dal.domain.MessageNoticeTemplate;
import com.yeyks.consumer.dal.domain.UserInfo;
import org.springframework.http.ResponseEntity;

import java.util.List;
import java.util.Map;


/**
 * <p>
 * 鱼宝可兑换的商品表 服务类
 * </p>
 *
 * @author yun
 * @since 2019-06-25
 */
public interface FishBallGoodsService extends IService<FishBallGoods> {

    /**
     * 查询鱼宝商品信息
     * @return 返回结果
     */
    ResponseEntity<AjaxResponseBody> list(Integer pageNum, Integer pageSize, AccountInfo loginUser);

    /**
     * 添加鱼宝商品信息
     * @param addFishBallGoodsParam 鱼宝输入参数
     * @param loginUser 操作人
     * @return 返回结果
     */
    ResponseEntity<AjaxResponseBody> save(AddFishBallGoodsParam addFishBallGoodsParam, AccountInfo loginUser);

    /**
     * 修改鱼宝商品信息
     * @param updateFishBallGoodsParam 鱼宝输入参数
     * @param loginUser 操作人
     * @return 返回结果
     */
    ResponseEntity<AjaxResponseBody> update(UpdateFishBallGoodsParam updateFishBallGoodsParam, AccountInfo loginUser);

    /**
     * 是否启用商品
     * @param loginUser
     * @param status
     * @return
     */
    ResponseEntity<AjaxResponseBody> enable(AccountInfo loginUser, Integer id, Integer status);

    /**
     * 删除鱼宝商品
     * @param loginUser
     * @param id sta
     * @return
     */
    ResponseEntity<AjaxResponseBody> delete(AccountInfo loginUser, Integer id);

    /**
     * admin - app 分页查询鱼宝列表
     * @param param 查询参数
     * @param convert 操作人
     * @return 返回信息
     */
    CommonResult<CommonPage<AppFishBallGoodsDTO>> selectPageByParam(QueryFishBallGoodsParam param, AccountInfo convert);

    /**
     * <p>
     * 消息通知表模板表 服务类
     * </p>
     *
     * @author yun
     * @since 2019-06-25
     */
    interface MessageNoticeTemplateService extends IService<MessageNoticeTemplate> {
        /**
         * 通过模板id获取模板对象
         *
         * @param template
         * @return
         */
        MessageNoticeTemplate getTemplate(String template);

        /**
         * 通过模板获取操作后的值(没有模板返回null)
         *
         * @param template
         * @param hotelName
         * @param checkIn
         * @param checkOut
         * @param count
         * @return title, content
         */
        Map<String, String> orderAfterHandleValue(String template, String hotelName, String checkIn, String checkOut, Integer count);

        /**
         * 获取模板值通用
         *
         * @param params
         * @param template
         * @return
         */
        Map<String, String> commonValue(Map<String, Object> params, String template);
    }

    /**
     * 消费商品券
     *
     * @param userInfo
     * @param couponId
     * @return 消费成功返回可用鱼宝数（失败-1）
     */
    Integer conversion(UserInfo userInfo, FishBallGoodsConversionParam param);

    /**
     * 分页获取商品券
     *
     * @param pageNo
     * @param pageSize
     * @return
     */
    List<FishBallGoodsDTO> list(Integer pageNo, Integer pageSize);

}
